/**
 * 文章管理
 * 
 * @param $
 */

(function($) {

	var pageObject = {

		init : function() {
			/** 初始化城市树 */
			this._reg_cityTree_btn();
			// 初始化表格
			this._init_table();
			// 获取推荐位列表
			this._get_block_select();
			// 获取省份选择
			this._get_province_select();
			// 获取城市选择
			this._get_city_select();
			// 添加文章
			this._init_add_btn_event();
			// 获取分类列表
			this.get_cate_class_select();
			// 初始化推送按钮
			this._init_block_item_article_btn();
			// 提交
			this._reg_submit_btn();
			// 删除文章按钮
			this._reg_delete_article_btn();
			// 关闭/开启文章按钮事件
			this._reg_closed_article_btn();
			// 修改文章按钮
			this._reg_update_article_btn();
			// 时间插件
			this._init_input_date();
			// 添加搜索事件
			this._reg_search_btn();
			// 文章评论
			this._reg_select_article_comment_btn();
		},
		/** 初始化城市树 */
		_reg_cityTree_btn : function() {
			$.ajax({
				url : '/manage/Ajax/findCityTree',
				type : 'GET',
				cache : false,
				dataType : 'json',
				timeout : 15000,
				error : function() {
				},
				success : function(json) {
					if (json.isSuccess) {
						init_tree(json.message);
					} else {
						layer.msg('获取权限树异常', {
							icon : 2,
							shade : 0.3
						});
					}
				}
			});
			var data = $(this).closest("tr").data("data");
			/**
			 * 初始化zTree插件
			 */
			function init_tree(json) {
				var setting = {
					check : {
						enable : true,
						autoCheckTrigger : true
					},
					data : {
						simpleData : {
							enable : true,
							idKey : "id",
							pIdKey : "parentId",
							rootPId : ""
						}
					},
				};
				pageObject.$zTree = $.fn.zTree.init($("#cityTree"), setting, json);
			}
		},

		/** 获取推荐位列表 */
		_get_block_select : function() {
			$.ajax({
				type : "GET",
				cache : false,
				async : false,
				dataType : "json",
				url : "/manage/article/blockItem/findBlock",
				success : function(data) {
					$("#pf-select-block").html("");
					if (data.isSuccess == true) {
						var classes = data.message;
						$("#pf-select-block-modal").append($("<option>").val("").text("请选择推荐位"));
						for ( var i in classes) {
							var blockClass = classes[i];
							var optionModal = $("<option>").val(blockClass.id).text(blockClass.title);
							$("#pf-select-block-modal").append(optionModal);
						}
					} else {
						alert(data.message);
					}
				}
			});
		},

		/** 添加搜索事件 */
		_reg_search_btn : function() {
			$("#pf-search-btn").click(function() {
				pageObject.searchStore();
			});
			// 回车事件
			$("#pf-search_article_key").keydown(function(e) {
				if (e.keyCode == 13) {
					pageObject.searchStore();
				}
			});
		},

		/** 获取省份列表 */
		_get_province_select : function() {
			$.ajax({
				type : "GET",
				cache : false,
				async : false,
				dataType : "json",
				url : "/manage/Ajax/findProvinceList",
				success : function(data) {
					if (data.isSuccess == true) {
						var classes = data.message;
						// 添加省份
						$("#pf-select-province-block-item").append($("<option>").val("").text("请选择省份"));
						for ( var i in classes) {
							var provinceClass = classes[i];
							var optionBlockItem = $("<option>").val(provinceClass.id).text(provinceClass.provinceName);
							$("#pf-select-province-block-item").append(optionBlockItem);
						}

					} else {
						alert(data.message);
					}
				}
			});
		},

		/** 获取城市选择 */
		_get_city_select : function() {
			$("#pf-select-province-block-item").change(function() {
				var obj = "";
				$.ajax({
					type : "GET",
					url : "/manage/Ajax/findCityList",
					data : "provinceId=" + $("#pf-select-province-block-item").val(),
					cache : false,
					dataType : "json",
					timeout : 100000,
					success : function(data) {
						if (data.isSuccess == true) {
							var results = data.message;
							$("#pf-select-city-block-item").html("");
							$("#pf-select-city-block-item").append($("<option>").val("").text("请选择城市"));
							for ( var i in results) {
								var cityClass = results[i];
								var optionBlockItem2 = $("<option>").val(cityClass.id).text(cityClass.cityName);
								$("#pf-select-city-block-item").append(optionBlockItem2);
							}
						}
					}
				});
			});
			$("#pf-select-province-block-item").change();
		},

		/** 时间区间查询输入框的日期插件初始化 */
		_init_input_date : function() {
			var checkout = $("#pf-search_article_start_date").datepicker({
				format : 'yyyy-mm-dd'
			}).on('changeDate', function(ev) {
				checkout.hide();
			}).data('datepicker');
			var checkout1 = $("#pf-search_article_end_date").datepicker({
				format : 'yyyy-mm-dd'
			}).on('changeDate', function(ev) {
				checkout1.hide();
			}).data('datepicker');
			// 过期时间
			var validcheckout = $("#pf-block-item-valid-date").datepicker({
				format : 'yyyy-mm-dd'
			}).on('changeDate', function(ev) {
				validcheckout.hide();
			}).data('datepicker');
		},

		/** 添加文章 */
		_init_add_btn_event : function() {
			// 注册选择缩略图按钮
			$("#thumbnailPicInput").uploadPreview({
				width : 100,
				height : 100,
				imgPreview : "#thumbnailPicImg",
				imgType : [ "bmp", "gif", "png", "jpg" ],
				callback : function() {
					// alert("成功");
					return false;
				}
			});

			$("#pf-add-article-btn").click(function() {
				albumId = "";
				// 重置form
				$("#pf-article-save-form").resetForm();
				$("#pf-article-save-form input[name='id']").val(null);
				$("#thumbnailPicImg").attr("src", "");
				$("#pf-modal-title").html("添加文章");
				$("#content").html("");
				UE.getEditor('editor').setContent("");
				$("#pf-add-article-modal").modal("show");
			});

		},
		/** end 添加文章 */

		/** 获取分类列表 */
		get_cate_class_select : function() {
			$.ajax({
				type : "GET",
				cache : false,
				async : false,
				dataType : "json",
				url : "/manage/article/get/allCate",
				success : function(data) {
					if (data.isSuccess == true) {
						var classes = data.message;
						// 添加选择
						$("#pf-article-case").append($("<option>").val("").text("请选择"));
						// 首页搜索选择
						$("#pf-select-article-cate").append($("<option>").val("").text("请选择"));
						for ( var i in classes) {
							var cateClass = classes[i];
							var option = $("<option>").val(cateClass.id).text(cateClass.title);
							var option2 = $("<option>").val(cateClass.id).text(cateClass.title);
							$("#pf-article-case").append(option);
							$("#pf-select-article-cate").append(option2);
						}
					} else {
						alert(data.message);
					}
				}
			});
		},
		/** 删除文章按钮事件 */
		_reg_delete_article_btn : function() {
			$(document).on("click", ".pf-delete-article-btn", function() {
				var $tr = $(this).closest("tr");
				layer.msg('确定删除文章标题为：' + $tr.data("data").title + "的文章吗？", {
					time : 0, // 20s后自动关闭
					icon : 3,
					shade : 0.3,
					btn : [ '确定', '取消' ],
					yes : function(index) {
						layer.close(index);
						var index = layer.msg('正在处理，请稍候。。。', {
							icon : 16,
							shade : 0.3
						});
						$.ajax({
							type : "GET",
							cache : false,
							data : {
								id : $tr.data("data").id,
								title : $tr.data("data").title
							},
							dataType : "json",
							url : "/manage/article/delete",
							success : function(data) {
								// 关闭加载框
								layer.close(index);
								if (data != undefined && data.isSuccess == true) {
									// 刷新
									$("#pf-article-table").bootstrapTable("refresh");
								} else {
									layer.msg(data.message, {
										icon : 2,
										shade : 0.3,
										btn : [ '确定' ]
									});
								}
							}
						});

					}
				});
			});
		},
		/** 关闭/开启文章按钮事件 */
		_reg_closed_article_btn : function() {
			$(document).on("click", ".pf-closed-article-btn", function() {
				var $tr = $(this).closest("tr");
				if ($tr.data("data").closed == true) {
					var msg = '确定开启文章标题为：' + $tr.data("data").title + '的文章吗？';
				} else {
					var msg = '确定关闭文章标题为：' + $tr.data("data").title + '的文章吗？';
				}
				layer.msg(msg, {
					time : 0, // 20s后自动关闭
					icon : 3,
					shade : 0.3,
					btn : [ '确定', '取消' ],
					yes : function(index) {
						layer.close(index);
						var index = layer.msg('正在处理，请稍候。。。', {
							icon : 16,
							shade : 0.3
						});
						$.ajax({
							type : "GET",
							cache : false,
							data : {
								id : $tr.data("data").id,
								title : $tr.data("data").title
							},
							dataType : "json",
							url : "/manage/article/close",
							success : function(data) {
								// 关闭加载框
								layer.close(index);
								if (data != undefined && data.isSuccess == true) {
									// 刷新
									$("#pf-article-table").bootstrapTable("refresh");
								} else {
									layer.msg(data.message, {
										icon : 2,
										shade : 0.3,
										btn : [ '确定' ]
									});
								}
							}
						});

					}
				});
			});
		},

		/** 修改文章按钮 */
		_reg_update_article_btn : function() {
			$(document).on("click", ".pf-update-article-btn", function() {
				// 重置form
				$("#pf-article-save-form").resetForm();
				var $tr = $(this).closest("tr");
				var data = $tr.data("data");
				// 显示弹窗
				$("#pf-modal-title").html("修改文章信息");
				$("#pf-add-article-modal").modal("show");
				// 设置数据
				FormUtils.fill_form($("#pf-article-save-form"), data);
				// 缩略图
				if (data.photo != undefined && data.photo != null && data.photo.length > 0) {
					$("#thumbnailPicImg").attr("src", uploadImageBase + "/" + data.photo);
				} else {
					$("#thumbnailPicImg").attr("src", "");
				}
				// $("#pf-cate-save-form input[name='id']").val(data.id);
				$("#pf-article-save-form input[name='allowComment'][value='" + data.allowComment + "']").trigger("click");
				$("#pf-article-save-form input[name='hidden'][value='" + data.hidden + "']").trigger("click");
				$("#pf-article-save-form input[name='closed'][value='" + data.closed + "']").trigger("click");
				$("#content").html(data.content);
				var value = $("#content").val();
				UE.getEditor('editor').setContent(value);
				pageObject.data_index = $tr.attr("data-index");
				albumId = data.id;
			});
		},
		/** 初始化推送按钮 */
		_init_block_item_article_btn : function() {
			$(document).on("click", ".pf-add-block-item-article-btn", function() {
				// 重置form
				$("#pf-block-item-article-save-form").resetForm();
				$("#pf-select-block-modal").val();
				$("#id").val(null);
				var $tr = $(this).closest("tr");
				var data = $tr.data("data");
				$("#itemId").val(data.id);
				$("#pf-modal-title").html("添加推荐");
				// 重置城市树
				pageObject._reg_cityTree_btn();
				$("#pf-add-block-item-article-modal").modal("show");
			});
		},

		/** “提交按钮” */
		_reg_submit_btn : function() {
			$("#pf-submit").click(function() {
				// 校验字段
				if (_validate_add_form_field() == false) {
					return;
				} else {
					// 非空字段
					var $orderby = $("#pf-article-save-form input[name='orderby']");
					if ($orderby.val() == null || $orderby.val() == "") {
						$orderby.val("50");
					}
					// jquery解析内容
					$("#editor_content").html(UE.getEditor('editor').getContent());
					// 读取图片和图片锚地资源（商品、店铺和其他）
					var articleResources = [];
					$("#editor_content img").each(function() {
						var res = {};
						res.url = $(this).attr("src");
						if ($(this).attr("nodes")) {
							res.nodes = JSON.parse(decodeURIComponent($(this).attr("nodes")));
						}
						articleResources.push(res);
					});
					if (articleResources.length > 0) {
						$("#articleResources").val(JSON.stringify(articleResources));
					} else {
						$("#articleResources").val("");
					}

					// 设置文章文本内容到form
					var intro = UE.getEditor('editor').getContentTxt();
					$("#content").val(intro);

					$("#pf-article-save-form").ajaxSubmit({
						dataType : "json",
						iframe : true,
						error : function(xhr, status, error) {
							layer.errorMsg(status + ": " + error);
						},
						success : function(data) {
							if (data != undefined && data.isSuccess == true) {
								// 关闭 添加 用户的 form窗口
								$("#pf-add-article-modal").modal("hide");
								// 刷新
								$("#pf-article-table").bootstrapTable("refresh");
							} else {
								layer.msg(data.message, {
									icon : 2,
									shade : 0.3,
									btn : [ '确定' ]
								});
							}
						}
					});
				}
			});

			/** 校验不能为空的字段 */
			function _validate_add_form_field() {
				if ($("#pf-article-save-form input[name='title']").val() == "") {
					layer.msg("文章 标题不能为空", {
						time : 0,
						icon : 2,
						shade : 0.3,
						btn : [ '确定' ]
					});
					return false;
				} else if ($("#pf-article-case").val() == 0) {
					layer.msg("文章 分类不能为空", {
						time : 0,
						icon : 2,
						shade : 0.3,
						btn : [ '确定' ]
					});
					return false;
				} else if ($("#pf-article-save-form input[name='orderby']").val() != null && isNaN($("#pf-article-save-form input[name='orderby']").val())) {
					layer.msg("文章 排序必须为数字", {
						time : 0,
						icon : 2,
						shade : 0.3,
						btn : [ '确定' ]
					});
					return false;
				} else {
					return true;
				}
			}

			/** 提交案例推荐 */
			$("#pf-submit-block-item-article").click(function() {
				if (_validate_form_field_block_item() == false) {
					return;
				} else {
					// 传递给服务端的城市id集合
					var cityIds = "";
					var nodes = pageObject.$zTree.getCheckedNodes(true);
					for (var i = 0, len = nodes.length; i < len; i++) {
						if (nodes[i].level = 2) {
							cityIds = nodes[i].id;
						}
					}
					if (cityIds.length == 0) {
						layer.msg("请选择要推荐到的城市", {
							time : 0,
							icon : 2,
							shade : 0.3,
							btn : [ '确定' ]
						});
						return;
					}
					$("#pf-block-item-article-save-form").ajaxSubmit({
						data : {
							cityIds : cityIds
						},
						dataType : "json",
						iframe : true,
						success : function(data) {
							if (data != undefined && data.isSuccess == true) {
								// 关闭 添加 用户的 form窗口
								$("#pf-add-block-item-article-modal").modal("hide");
							} else {
								layer.msg(data.message, {
									icon : 2,
									shade : 0.3,
									btn : [ '确定' ]
								});
							}
						}
					});
				}
			});
			/** 提交验证-blockItem */
			function _validate_form_field_block_item() {
				if ($("#pf-select-city").val() == "") {
					layer.msg("城市 不能为空", {
						time : 0,
						icon : 2,
						shade : 0.3,
						btn : [ '确定' ]
					});
					return false;
				} else if ($("#pf-select-block-modal").val() == null || $("#pf-select-block-modal").val() == "") {
					layer.msg("推荐位 不能为空", {
						time : 0,
						icon : 2,
						shade : 0.3,
						btn : [ '确定' ]
					});
					return false;
				} else if ($("#pf-block-item-article-save-form input[name='orderby']").val() == "" || $("#pf-block-item-article-save-form input[name='orderby']").val() == null
						|| isNaN($("#pf-block-item-article-save-form input[name='orderby']").val())) {
					layer.msg("案例 排序不能为空，且必须为数字", {
						time : 0,
						icon : 2,
						shade : 0.3,
						btn : [ '确定' ]
					});
					return false;
				} else {
					return true;
				}
			}

		},

		/** 搜索文章 */
		searchStore : function() {
			// 刷新
			var data = {
				queryParams : function(params) {
					params.searchText = $("#pf-search_article_key").val();
					params.startDate = $("#pf-search_article_start_date").val();
					params.endDate = $("#pf-search_article_end_date").val();
					params.cate = $("#pf-select-article-cate").val();
					params.closed = $("#pf-select-article-closed").val();
					return params;
				},
				pageNumber : 1
			};
			$("#pf-article-table").bootstrapTable('refresh', data);
		},

		/** 初始化表格 */
		_init_table : function() {
			$("#pf-article-table")
					.bootstrapTable(
							{
								method : 'get',
								url : "/manage/article/list",
								queryParams : function(params) {
									return params;
								},
								cache : false,
								// height : 400,
								sidePagination : 'server', // client or server
								queryParamsType : 'pageSize',
								striped : true,
								pagination : true,
								pageSize : 10,
								pageList : [ 10, 20, 50, 100, 200 ],
								paginationDetail : true,
								paginationHAlign : 'right', // right, left
								showColumns : true,
								showRefresh : true,
								minimumCountColumns : 2,
								checkboxHeader : false,
								clickToSelect : true,
								columns : [
										{
											field : 'id',
											title : 'id',
											align : 'left',
											valign : 'middle',
											visible : false,
											sortable : true
										},
										{
											field : 'title',
											title : '标题',
											align : 'left',
											valign : 'middle',
											visible : true,
											sortable : true,
											formatter : function(value, row) {
												var link = front_base + "/article/" + row.id;
												return '<a href=' + link + ' target="_Blank">' + row.title + '</a>';
											}
										},
										{
											field : 'cateTitle',
											title : '分类',
											align : 'left',
											valign : 'middle',
											visible : true,
											sortable : true
										},
										{
											field : 'closed',
											title : '关闭状态',
											align : 'left',
											valign : 'middle',
											visible : true,
											sortable : true,
											formatter : function(value, row) {
												if (row.closed == true) {
													return "已关闭"
												} else {
													return "正常"
												}
											}
										},
										{
											field : 'createTime',
											title : '添加时间',
											align : 'left',
											valign : 'middle',
											visible : true,
											sortable : true,
											formatter : function(value, row) {
												if (row.createTime == null || row.createTime == "") {
													// 时间戳转Date 格式化
													var dateline = new Date();
													var stime = row.dateline;
													dateline.setTime(stime * 1000);
													return dateline.format('yyyy-MM-dd hh:mm:ss');
												} else {
													return row.createTime;
												}
											}
										},
										{
											field : 'views',
											title : '浏览量',
											align : 'right',
											valign : 'middle',
											visible : true,
											sortable : true
										},
										{
											field : 'favorites',
											title : '收藏量',
											align : 'right',
											valign : 'middle',
											visible : true,
											sortable : true
										},
										{
											field : 'orderby',
											title : '排序',
											align : 'right',
											valign : 'middle',
											visible : true,
											sortable : true
										},
										{
											field : 'option',
											title : '操作',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false,
											formatter : function(value, row, index) {
												var button = "";
												button += ''
														+ '<button type="button" class="btn btn-success btn-xs pf-update-article-btn"><i class="glyphicon glyphicon-pencil"></i>修改</button>&nbsp;';
												if (row.closed == true) {
													button += ' <button type="button" class="btn btn-success btn-xs pf-closed-article-btn"><i class="glyphicon glyphicon-ok"></i>开启</button>&nbsp;';
												} else {
													button += ' <button type="button" class="btn btn-danger btn-xs pf-closed-article-btn"><i class="glyphicon glyphicon-trash"></i>关闭</button>&nbsp;';
												}
												button += ' <button type="button" class="btn btn-danger btn-xs pf-delete-article-btn"><i class="glyphicon glyphicon-trash"></i>删除</button>&nbsp;';
												button += ' <button type="button" class="btn btn-primary btn-xs pf-select-article-comment-btn"><i class="glyphicon glyphicon-comment"></i> 评论管理</button>&nbsp;';

												button += '<button type="button" class="btn btn-info btn-xs pf-add-block-item-article-btn"><i class="glyphicon glyphicon-share"></i>推送</button>&nbsp;';
												return button;
											}
										} ]
							});
		},
		/** 初始化文章评论按钮 */
		_reg_select_article_comment_btn : function() {
			$(document).on("click", ".pf-select-article-comment-btn", function() {
				var $tr = $(this).closest("tr");
				var data = $tr.data("data");
				var dataParams = {
					queryParams : function(params) {
						params.closed = false;
						params.articleId = data.id;
						return params;
					},
					pageNumber : 1
				};
				$("#select-article-comment-articleId").val(data.id);
				$("#pf-article-comment-table").bootstrapTable('refresh', dataParams);
				$("#pf-select-article-comment-modal").modal("show");
			});
		}
	}
	pageObject.init();

	Date.prototype.format = function(format) {
		var date = {
			"M+" : this.getMonth() + 1,
			"d+" : this.getDate(),
			"h+" : this.getHours(),
			"m+" : this.getMinutes(),
			"s+" : this.getSeconds(),
			"q+" : Math.floor((this.getMonth() + 3) / 3),
			"S+" : this.getMilliseconds()
		};
		if (/(y+)/i.test(format)) {
			format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
		}
		for ( var k in date) {
			if (new RegExp("(" + k + ")").test(format)) {
				format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
			}
		}
		return format;
	}
})(jQuery);